using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using VB_ObjetosdeNegocio.BO;
using AgenciaEmpleo;

namespace HistoriaLaboral.AltaPersonas
{
    public partial class frmAltaPersona4 : AgenciaEmpleo.Plantillas.frmMoldeAltaPersonas
    {
        tPersonas mPersona = new tPersonas();
        #region Singleton

        static private frmAltaPersona4 formAltaPersona = null;
        public frmAltaPersona4()
        {
            InitializeComponent();
            mPersona.IdPersona = 0;
        }

        public frmAltaPersona4(int pIdPersona)
        {
            InitializeComponent();
            mPersona.IdPersona = pIdPersona;
            mPersona.Traer_objeto();
            CargarPersona(mPersona);
        }

        static public frmAltaPersona4 GetInstance()
        {
            if (formAltaPersona == null || formAltaPersona.IsDisposed == true)
            {
                formAltaPersona = new frmAltaPersona4();
            }
            formAltaPersona.BringToFront();
            return formAltaPersona;
        }
        static public frmAltaPersona4 GetInstance(int pIdPersona)
        {
            if (formAltaPersona == null || formAltaPersona.IsDisposed == true)
            {
                formAltaPersona = new frmAltaPersona4(pIdPersona);
            }
            formAltaPersona.BringToFront();
            return formAltaPersona;
        }

        #endregion

        private void CargarPersona(tPersonas mPersona)
        {

            // cargar Cursos de inters
            // area, curso, idCurso
            List<tCursos_Deseados_x_Persona> listaInteres = new List<tCursos_Deseados_x_Persona>();
            listaInteres = mPersona.ListatCursos_Deseados_x_Persona;
            if (listaInteres.Count != 0)
            {
                foreach (tCursos_Deseados_x_Persona curso in listaInteres)
                {
                    dgvCursosInteres.Rows.Add(curso.tCursos.tArea_Cursos.cNombre, curso.tCursos.cNombre,
                         curso.IdCurso);
                    dgvCursosInteres.Rows[dgvCursosInteres.Rows.Count - 1].Tag = "db";
                }

            }


            // cargarTrabajos
            //idtrabajo, empresa, IdEmpresa,area, IdAreafechaInicio, fechaFin, TipoCargo, cargo,IdCargo, TareasRealizadas
            List<tTrabajos> listaTrabajos = new List<tTrabajos>();
            listaTrabajos = mPersona.ListatTrabajos;
            string fechaIni = "", fechaFin = "";
            string Cargo = "", tipoPuesto = "", idCargo = "";
            foreach (tTrabajos trabajo in listaTrabajos)
            {

                if ((trabajo.IdEmpresa != null) & (trabajo.cFuente == "Propia"))
                {
                    //controlo si fecha inicio es null
                    if (trabajo.cFechaInicio == null)
                        fechaIni = "";
                    else
                        fechaIni = trabajo.cFechaInicio.Value.ToShortDateString();
                    //controlo si fecha fin es null
                    if (trabajo.cFechaFin == null)
                        fechaFin = "";
                    else
                        fechaFin = trabajo.cFechaFin.Value.ToShortDateString();
                    //controlo si son null Cargo, idcargo, y tipo de puesto 
                    if (trabajo.IdCargos == null)
                    {
                        Cargo = "";
                        idCargo = "";
                        tipoPuesto = "";
                    }
                    else
                    {
                        Cargo = trabajo.tCargos.cNombre.ToString();
                        idCargo = trabajo.IdCargos.ToString();

                        tipoPuesto = trabajo.tCargos.tTipo_Puestos.cNombre;
                    }

                    //Cargo DG
                    //Formato dgv
                    // idTrabajo, Empresa,idEmpresa, Area,IdArea,FechaInicio,FechaFin,TipoCargo,Cargo,
                    //IdCargo,TareasRealizadas

                    dgvTrabajos.Rows.Add(trabajo.IdTrabajo, trabajo.tEmpresas.cRazonSocial,
                        trabajo.IdEmpresa.ToString(), trabajo.tAreas.cNombre, trabajo.IdAreas,
                        fechaIni, fechaFin, tipoPuesto, Cargo, idCargo, trabajo.cTareasARealizar);
                    dgvTrabajos.Rows[dgvTrabajos.Rows.Count - 1].Tag = "db";

                }
            }
        }



        private void btnCancelar_Click(object sender, EventArgs e)
        {
            frmPrincipal padre = (frmPrincipal)this.MdiParent;
            padre.CloseMDIChilds("WizardAltaPersonas");

        }

        private void btnAgregarTrabajo_Click(object sender, EventArgs e)
        {
            //Formato dgv
            // idTrabajo, Empresa,idEmpresa, Area,IdArea,FechaInicio,FechaFin,TipoCargo,Cargo,
            //IdCargo,TareasRealizadas

            frmTrabajos frm = new frmTrabajos();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                //Controlo por si los id son blancos
                String mIdArea = "";
                String mIdCargo = "";
                if (frm.cboxArea.Text != "") mIdArea = frm.cboxArea.SelectedValue.ToString();
                if (frm.cboxCargo.Text != "") mIdCargo = frm.cboxCargo.SelectedValue.ToString();

                dgvTrabajos.Rows.Add("0", frm.cboxEmpresa.Text, frm.cboxEmpresa.SelectedValue.ToString(),
                frm.cboxArea.Text, mIdArea, frm.txtFechaInicio.Text.TrimStart("  /  /".ToCharArray()),
                frm.txtFechaFin.Text.TrimStart("  /  /".ToCharArray()),
                frm.cboxTipoCargo.Text, frm.cboxCargo.Text, mIdCargo,
                 frm.txtObservaciones.Text);
            }
        }


        private void btnAtras_Click(object sender, EventArgs e)
        {
            frmAltaPersona3 frm = frmAltaPersona3.GetInstance();
            frm.MdiParent = this.MdiParent;
            this.Visible = false;
            frm.Show();
        }



        private void btnQuitarTrabajo_Click(object sender, EventArgs e)
        {
            if (dgvTrabajos.SelectedRows.Count != 0)
            {
                if (dgvTrabajos.SelectedRows[0].Tag != null)
                    dgvTrabajos.SelectedRows[0].Visible = false;
                else
                    dgvTrabajos.Rows.Remove(dgvTrabajos.SelectedRows[0]);

            }
        }



        private void btnSiguiente_Click(object sender, EventArgs e)
        {
            if (mPersona.IdPersona == 0)
            {
                frmAltaPersona5 frm = frmAltaPersona5.GetInstance();
                frm.MdiParent = this.MdiParent;
                this.Visible = false;
                frm.Show();

            }
            else
            {

                frmAltaPersona5 frm = frmAltaPersona5.GetInstance(mPersona.IdPersona);
                frm.MdiParent = this.MdiParent;
                this.Visible = false;
                frm.Show();
            }
        }

        public void GuardarCursosInteres(int pIdPersona)
        {
            // Area, curso, IdCurso
            foreach (DataGridViewRow dr in dgvCursosInteres.Rows)
            {
                tCursos_Deseados_x_Persona mCursosDesados = new tCursos_Deseados_x_Persona();
                mCursosDesados.IdCurso = Int32.Parse(dr.Cells[2].Value.ToString());
                mCursosDesados.IdPersona = pIdPersona;
                mCursosDesados.cObservaciones = "";

                if (dr.Visible)
                {
                    mCursosDesados.Guardar();
                }
                else
                {
                    mCursosDesados.Eliminar();
                }
            }

        }

        public void GuardarTrabajos(Int32 pIdPersona)
        {
            //Formato dgv
            // idTrabajo, Empresa,idEmpresa, Area,IdArea,FechaInicio,FechaFin,TipoCargo,Cargo,IdCargo,TareasRealizadas
            if (dgvTrabajos.Rows.Count != 0)
            {
                foreach (DataGridViewRow dr in dgvTrabajos.Rows)
                {

                    tTrabajos mTrabajos = new tTrabajos();
                    //mTrabajos.IdTrabajo = 0;
                    mTrabajos.IdTrabajo = Int32.Parse(dr.Cells[0].Value.ToString());
                    mTrabajos.IdPersona = pIdPersona;
                    mTrabajos.IdEmpresa = Int32.Parse(dr.Cells[2].Value.ToString());
                    if (dr.Cells[3].Value.ToString() != "")
                        mTrabajos.IdAreas = Int32.Parse(dr.Cells[4].Value.ToString());
                    try
                    {
                        mTrabajos.cFechaInicio = System.DateTime.Parse(dr.Cells[5].Value.ToString());
                    }
                    catch { }

                    try
                    {
                        mTrabajos.cFechaFin = System.DateTime.Parse(dr.Cells[6].Value.ToString());
                    }
                    catch { }

                    if (dr.Cells[8].Value.ToString() != "")
                        mTrabajos.IdCargos = Int32.Parse(dr.Cells[9].Value.ToString());
                    mTrabajos.cTareasARealizar = dr.Cells[10].Value.ToString();
                    mTrabajos.cObservaciones = "";
                    mTrabajos.cEstado = "";
                    mTrabajos.cFuente = "Propia";

                    if (dr.Visible)
                        mTrabajos.Guardar();
                    else
                        mTrabajos.Eliminar();

                }
            }
        }

        private void btnAgregarCursosInteres_Click(object sender, EventArgs e)
        {
            frmCursosInteres frm = new frmCursosInteres();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                foreach (DataGridViewRow dr in dgvCursosInteres.Rows)
                {
                    if (dr.Cells[2].Value.ToString() == frm.cboxNombreCurso.SelectedValue.ToString())
                    {
                        dr.Visible = true;
                        return;
                    }
                }
                dgvCursosInteres.Rows.Add(frm.cboxAreaCurso.Text, frm.cboxNombreCurso.Text,
                    frm.cboxNombreCurso.SelectedValue.ToString());
            }
        }

        private void btnQuitarCursoInteres_Click(object sender, EventArgs e)
        {
            if (dgvCursosInteres.SelectedRows.Count != 0)
            {
                if (dgvCursosInteres.SelectedRows[0].Tag != null)
                    dgvCursosInteres.SelectedRows[0].Visible = false;
                else
                    dgvCursosInteres.Rows.Remove(dgvCursosInteres.SelectedRows[0]);
            }

        }

        private void dgvTrabajos_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //Formato dgv
            // idTrabajo, Empresa,idEmpresa, Area,IdArea,FechaInicio,FechaFin,TipoCargo,Cargo,IdCargo,TareasRealizadas
            if (dgvTrabajos.SelectedRows.Count != 0)
            {
                frmTrabajos frm = new frmTrabajos();
                frm.cboxEmpresa.Text = dgvTrabajos.SelectedRows[0].Cells[1].Value.ToString();
                frm.cboxArea.Text = dgvTrabajos.SelectedRows[0].Cells[3].Value.ToString();
                frm.txtFechaInicio.Text = dgvTrabajos.SelectedRows[0].Cells[5].Value.ToString();
                frm.txtFechaFin.Text = dgvTrabajos.SelectedRows[0].Cells[6].Value.ToString();
                frm.cboxTipoCargo.Text = dgvTrabajos.SelectedRows[0].Cells[7].Value.ToString();
                frm.CargarTipoCargo();
                frm.cboxCargo.Text = dgvTrabajos.SelectedRows[0].Cells[8].Value.ToString();
                frm.txtObservaciones.Text = dgvTrabajos.SelectedRows[0].Cells[10].Value.ToString();

                if (frm.ShowDialog() == DialogResult.OK)
                {
                    //Controlo por si los id son blancos
                    String mIdArea = "";
                    String mIdCargo = "";
                    if (frm.cboxArea.Text != "") mIdArea = frm.cboxArea.SelectedValue.ToString();
                    if (frm.cboxCargo.Text != "") mIdCargo = frm.cboxCargo.SelectedValue.ToString();

                    dgvTrabajos.Rows.Add(dgvTrabajos.SelectedRows[0].Cells[0].Value.ToString(),
                        frm.cboxEmpresa.Text, frm.cboxEmpresa.SelectedValue.ToString(),
                      frm.cboxArea.Text, mIdArea, frm.txtFechaInicio.Text.TrimStart("  /  /".ToCharArray()),
                      frm.txtFechaFin.Text.TrimStart("  /  /".ToCharArray()),
                      frm.cboxTipoCargo.Text, frm.cboxCargo.Text, mIdCargo,
                       frm.txtObservaciones.Text);
                    dgvTrabajos.Rows.Remove(dgvTrabajos.CurrentRow);
                }
            }
        }

        private void dgvCursosInteres_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvCursosInteres.SelectedRows.Count != 0)
            {

            }
        }




    }
}

